package main

import (
	"fmt"
	"time"
)

func main() {
	//var a [10]int
	for i := 0; i < 1000; i++ {
		go func(i int) { // race condition 数据冲突
			// 如果不传入i，i就是一个闭包，i会引用外面的 i最后一次为10，a[i] 引用a[10]由于是并发所以就会数据冲突
			// 传入i，进行了值传递
			for {
				fmt.Printf("Hello from "+"goroutine %d", i) // io 操作会切换
				fmt.Println()
				//a[i] ++ // 不是io操作不会交出控制权
				//runtime.Gosched() // 交出协程控制权
			}
		}(i)
	}
	time.Sleep(time.Minute) // 休眠毫秒
	//fmt.Println(a)  // a 和 a[i] ++ 会并发读写
}
